/*                          UX-Framework                               
 *                                                                 
 *  iZE Co.,Ltd. Copyright 2009 All rights reserved.          
 *  This file is distributed under the terms of the GNU Lesser 
 *  General Public License, described in file LICENSE.                                     
 */
package jp.ize.ux.components;

// {{{ imports
import jp.ize.ux.UXObject;
import jp.ize.ux.UXResource;
import jp.ize.ux.UXScalable;
import jp.ize.ux.UXResource;
import jp.ize.ux.UXFocusManager;
import jp.ize.ux.UXController;
import jp.ize.ux.UXInteraction;
import jp.ize.ux.states.UXBasicState;
import jp.ize.ux.acts.Act;
import jp.ize.ux.components.UXComponent;
// }}}
// {{{ class UXCheckBoxResource extends UXComponentResource
/**
 * UXCheckBoxResource クラス<br>
 * UXCheckBoxコンポーネントに利用されるリソース群です。
 */
class UXCheckBoxResource extends UXComponentResource
{
	// {{{ public var background( default, default ) : UXObject;
	/**
	 * チェックをする矩形部分のコンポーネントです。
	 */
	public var box( default, default ) : UXObject;
	// }}}
	// {{{ public var check( default, default ) : UXResource;
	/**
	 * チェックされた時に利用されるリソースを示します。
	 */
	public var check( default, default ) : UXResource;
	// }}}
	// {{{ public var uncheck( default, default ) : UXResource;
	/**
	 * チェックが外された時に利用されるリソースを示します。
	 */
	public var uncheck( default, default ) : UXResource;
	// }}}
}
// }}}
// {{{ enum UXCheckBoxActEvent
enum UXCheckBoxActEvent
{
}
// }}}
// {{{ class UXCheckBoxAct extends ActSubject<UXCheckBoxActEvent>
/**
 * UXCheckBoxAct クラス<br>
 * UXCheckBoxのデフォルトアクションです。
 */
class UXCheckBoxAct extends ActSubject<UXCheckBoxActEvent>
{
	// {{{ public function new()
	/**
	 * コンストラクタです。<br>
	 */
	public function new()
	{
		super();
	}
	// }}}
	// {{{ public function check( s : UXCheckBoxState ) : Void
	/**
	 * チェックが付けられた時のデフォルトアクションです。
	 */
	public function check( s : UXCheckBoxState ) : Void
	{
	}
	// }}}
	// {{{ public function uncheck( s : UXCheckBoxState ) : Void
	/**
	 * チェックが外された時のデフォルトアクションです。
	 */
	public function uncheck( s : UXCheckBoxState ) : Void
	{
	}
	// }}}
	// {{{ public function uplight( s : UXCheckBoxState ) : Void
	/**
	 * ボタンをハイライトした時のデフォルトアクションです。
	 */
	public function uplight( s : UXCheckBoxState ) : Void
	{
	}
	// }}}
	// {{{ public function downlight( s : UXCheckBoxState ) : Void
	/**
	 * ボタンのハイライトを解除した時のデフォルトアクションです。
	 */
	public function downlight( s : UXCheckBoxState ) : Void
	{
	}
	// }}}
	// {{{ public function focus( s : UXCheckBoxState ) : Void
	/**
	 * ボタンがフォーカスされた時のデフォルトアクションです。
	 */
	public function focus( s : UXCheckBoxState ) : Void
	{
	}
	// }}}
	// {{{ public function unfocus( s : UXCheckBoxState ) : Void
	/**
	 * ボタンのフォーカスが解除された時のデフォルトアクションです。
	 */
	public function unfocus( s : UXCheckBoxState ) : Void
	{
	}
	// }}}
	// {{{ public function disable( s : UXCheckBoxState ) : Void
	/**
	 * 無効にした時のデフォルトアクションです。
	 */
	public function disable( s : UXCheckBoxState ) : Void
	{
	}
	// }}}
	// {{{ public function enable( s : UXCheckBoxState ) : Void
	/**
	 * 有効にした時のデフォルトアクションです。
	 */
	public function enable( s : UXCheckBoxState ) : Void
	{
	}
	// }}}
	// {{{ public function show( s : UXCheckBoxState ) : Void
	/**
	 * 表示された時のデフォルトアクションです。
	 */
	public function show( s : UXCheckBoxState ) : Void
	{
	}
	// }}}
	// {{{ public function hide( s : UXCheckBoxState ) : Void
	/**
	 * 非表示になった時のデフォルトアクションdす。
	 */
	public function hide( s : UXCheckBoxState ) : Void
	{
	}
	// }}}
}
// }}}
// {{{ class UXCheckBoxCoState
class UXCheckBoxCoState
{
	// {{{ public var selected(default, setSelected ) : Bool
	/**
	 * このボタンにフォーカスが当たっているかどうかを取得、または設定します。
	 */
	public var focused(default, default) : Bool;
	// }}}
	// {{{ public var highlighted(default, default) : Bool
	/**
	 * このボタンがハイライトされているかどうかを取得、または設定します。
	 */
	public var highlighted(default, default) : Bool;
	// }}}
}
// }}}
// {{{ enum UXCheckBoxExclusiveState
/**
 * UXCheckBoxの各種状況を表現します。
 */
enum UXCheckBoxExclusiveState
{
	/** 初期化状態にある事を意味します。*/
	INIT;
	/** 無効になっている事を意味します。*/
	DISABLE;
	/** 有効になっている事を意味します。パラメーターでは、フォーカスやハイライトの状況を保持します。*/
	ENABLE ( flags : UXCheckBoxCoState );
}
// }}}
// {{{ class UXCheckBoxState extends UXBasicState
/**
 * UXCheckBoxState クラス<br>
 * UXCheckBoxの現在の状態を表すオブジェクトです。
 */
class UXCheckBoxState extends UXBasicState
{
	// {{{ public var resource( default, default ) : UXCheckBoxResource;
	/**
	 * 描画に使用するリソースです。
	 */
	public var resource( default, default ) : UXCheckBoxResource;
	// }}}
	// {{{ public var background( default, default ) : UXComponent
	/**
	 * チェックをする矩形部分のコンポーネントです。
	 */
	public var box( default, default ) : UXScalable;
	// }}}
	// {{{ public var label(default, default) : UXLabel
	/**
	 * ボックスと共に表示できる文字です。
	 */
	public var label(default, default) : UXLabel;
	// }}}
	// {{{ public var textAttribute(default, default) : UXTextAttribute
	/**
	 * テキストの表示属性です。
	 */
	public var textAttribute(default, default) : UXTextAttribute;
	// }}}
	// {{{ public var act(default, null) : UXCheckBoxAct
	/**
	 * デフォルトの動きです。
	 */
	public var acts(default, null) : UXCheckBoxAct;
	// }}}
	// {{{ public var condition( default, default) : UXCheckBoxExclusiveState;
	/**
	 * enableかどうかやフォーカスが当たっているかなど各種状況を保持する変数です。
	 */
	public var condition( default, default) : UXCheckBoxExclusiveState;
	// }}}
	// {{{ public var focusManager(default, default) : UXFocusManager
	/**
	 * このコンポーネントが属するフォーカスグループの管理オブジェクトです。
	 * このコンポーネントがフォーカスを受け取らない場合はnullです。
	 */
	public var focusManager(default, default) : UXFocusManager;
	// }}}
	// {{{ public function new()
	/**
	 * コンストラクタです。
	 */
	public function new()
	{
		super();
		// 
		// TODO
		// リソースの設定
		// デフォルト値の設定
	}
	// }}}
	// {{{ private function attachResource() : Void
	/**
	 * グローバルなリソースをresourceプロパティに取得する関数です。
	 */
	private function attachResource() : Void
	{
	}
	// }}}
}
// }}}
// {{{ class UXCheckBox extends UXComponent
/** 
 * UXCheckBox クラス<br>
 * 選択または選択解除ができるコンポーネントです。<br>
 * 
 *
 * @author		iZE Co., Ltd.<br>
 * @version		$Id: UXCheckBox.hx 20 2009-02-04 08:23:19Z yimai.v $<br>
 */
class UXCheckBox extends UXComponent
{
	// {{{ properties

	private var _state : UXCheckBoxState;

	// }}}
	// {{{ public var ctrl(default, null) : UXController<UXCheckBoxState>
	/**
	 * インタラクションを司るコントローラー。
	 */
	public var ctrl(default, null) : UXController<UXCheckBoxState>;
	// }}}
	// {{{ public function new()
	/**
	 * コンストラクタです。
	 */
	public function new()
	{
		super();
	}
	// }}}
	// {{{ public function refreshResource() : Void
	/**
	 * グローバルなリソースを再取得する関数です。
	 */
	public function refreshResource() : Void
	{
	}
	// }}}
	// {{{ public function update( updator : UXCheckBoxState -> Void ) : Void
	/**
	 * このコンポーネントの状態を直接変更するメソッドです。状態のどんな操作も可能になるので、
	 * このメソッドの使用には注意が必要です。
	 */
	public function update( updator : UXCheckBoxState -> Void ) : Void
	{
		updator( _state );
	}
	// }}}
}
// }}}
// {{{ class UXCheckBoxInitInteraction extends UXInteraction<UXCheckBoxState>
/**
 * UXCheckBoxInitInteraction クラス<br>
 * 初期化に対するデフォルトインタラクションです。
 */
class UXCheckBoxInitInteraction extends UXInteraction<UXCheckBoxState>
{
}
// }}}
// {{{ class UXCheckBoxCheckInteraction extends UXInteraction<UXCheckBoxState>
/**
 * UXCheckBoxDicideInteraction クラス<br>
 * check/uncheckに対するデフォルトインタラクションです。
 */
class UXCheckBoxCheckInteraction extends UXInteraction<UXCheckBoxState>
{
}
// }}}
// {{{ class UXCheckBoxHighlightInteraction extends UXInteraction<UXCheckBoxState>
/**
 * UXCheckBoxHighlightInteraction クラス<br>
 * highlight/delightに対するデフォルトインタラクションです。
 */
class UXCheckBoxHighlightInteraction extends UXInteraction<UXCheckBoxState>
{
}
// }}}
// {{{ class UXCheckBoxFocusInteraction extends UXInteraction<UXCheckBoxState>
/**
 * UXCheckBoxFocusInteraction クラス<br>
 * focus/unfocusに対するデフォルトインタラクションです。
 */
class UXCheckBoxFocusInteraction extends UXInteraction<UXCheckBoxState>
{
}
// }}}
// {{{ class UXCheckBoxResizeInteraction extends UXInteraction<UXCheckBoxState>
/**
 * UXCheckBoxResizeInteraction クラス<br>
 * 大きさを変更するデフォルトインタラクションです。
 */
class UXCheckBoxResizeInteraction extends UXInteraction<UXCheckBoxState>
{
}
// }}}
// {{{ class UXCheckBoxEnableInteraction extends UXInteraction<UXCheckBoxState>
/**
 * UXCheckBoxEnableInteraction クラス<br>
 * 有効/無効を切り替えるデフォルトインタラクションです。
 */
class UXCheckBoxEnableInteraction extends UXInteraction<UXCheckBoxState>
{
}
// }}}
// {{{ class UXCheckBoxVisibilityInteraction extends UXInteraction<UXCheckBoxState>
/**
 * UXCheckBoxVisibilityInteraction クラス<br>
 * 表示/非表示に対するインタラクションです。
 */
class UXCheckBoxVisibilityInteraction extends UXInteraction<UXCheckBoxState>
{
}
// }}}
